package observerexample.test;



import observerexample.bugaoban.AngelListener;
import observerexample.bugaoban.DevilListener;

import javax.swing.*;
import java.awt.*;

/**
 * JButton中观察者模式的应用
 * @author yaojianfeng
 */
public class SwingObserverExample {
    JFrame frame;

    public static void main(String[] args) {
        SwingObserverExample  example = new SwingObserverExample();
        example.go();
    }

    public void go() {
        JFrame frame=new JFrame("Java按钮组件示例");


        //在这里设置frame属性
        frame.setSize(400, 200);
        /**
         * JPanel 是 Java图形用户界面(GUI)工具包swing中的面板容器类，
         * 包含在javax.swing 包中，可以进行嵌套，功能是对窗体中具有相同逻辑功能的组件进行组合。
         */
        JPanel jp=new JPanel();
        JButton button = new JButton("Should I do it?");
        JButton btn1=new JButton("我是普通按钮");
        JButton btn2=new JButton("我是带背景颜色按钮");
        JButton btn3=new JButton("我是不可用按钮");
        JButton btn4=new JButton("我是底部对齐按钮");

        button.addActionListener(new AngelListener());
        button.addActionListener(new DevilListener());
       frame.getContentPane().add(BorderLayout.CENTER,button);
        jp.add(button);
        button.setBackground(Color.GREEN);
        jp.add(btn1);
        //设置按钮背景色
        btn2.setBackground(Color.YELLOW);
        jp.add(btn2);
        //设置按钮不可用
        btn3.setEnabled(false);
        jp.add(btn3);
        //设置尺寸
        Dimension preferredSize=new Dimension(160, 60);
        //设置按钮大小
        btn4.setPreferredSize(preferredSize);
        //设置按钮垂直对齐方式
        btn4.setVerticalAlignment(SwingConstants.BOTTOM);
        jp.add(btn4);
        frame.add(jp);
        //设置框架边界
        frame.setBounds(300, 200, 600, 300);
        //设置是否可视化
        frame.setVisible(true);
        //设置关闭窗口的触发事件
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
